<?php

class WfPlantillaOrdenTrabajo {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const NOMBRE_ENTIDAD = "WfPlantillaOrdenTrabajo";
  const NOMBRE_ENTIDAD_ARCHIVO = "WfPlantillaOrdenTrabajoArchivo";
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Campos">
  private $_id;
  private $_departamento;
  private $_tipoOrdenTrabajo;
  private $_fechaLlamado;
  private $_descripcion;
  private $_direccion;
  private $_nombrePersona;
  private $_telefonoPersona;
  private $_observacion;
  private $_nombreAsignado;
  private $_paternoAsignado;
  private $_maternoAsignado;
  private $_fechaServicio;
  private $_idEstadoOrdenTrabajo;
  private $_idFlujo;
  private $_existe;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getId() { return $this->_id; }
  public function setId($value) { $this->_id = $value; }

  public function getDepartamento() { return $this->_departamento; }
  public function setDepartamento($value) { $this->_departamento = $value; }

  public function getTipoOrdenTrabajo() { return $this->_tipoOrdenTrabajo; }
  public function setTipoOrdenTrabajo($value) { $this->_tipoOrdenTrabajo = $value; }

  public function getFechaLlamado() { return $this->_fechaLlamado; }
  public function setFechaLlamado($value) { $this->_fechaLlamado = $value; }

  public function getDescripcion() { return $this->_descripcion; }
  public function setDescripcion($value) { $this->_descripcion = $value; }

  public function getDireccion() { return $this->_direccion; }
  public function setDireccion($value) { $this->_direccion = $value; }

  public function getNombrePersona() { return $this->_nombrePersona; }
  public function setNombrePersona($value) { $this->_nombrePersona = $value; }

  public function getTelefonoPersona() { return $this->_telefonoPersona; }
  public function setTelefonoPersona($value) { $this->_telefonoPersona = $value; }

  public function getObservacion() { return $this->_observacion; }
  public function setObservacion($value) { $this->_observacion = $value; }

  public function getNombreAsignado() { return $this->_nombreAsignado; }
  public function setNombreAsignado($value) { $this->_nombreAsignado = $value; }

  public function getPaternoAsignado() { return $this->_paternoAsignado; }
  public function setPaternoAsignado($value) { $this->_paternoAsignado = $value; }

  public function getMaternoAsignado() { return $this->_maternoAsignado; }
  public function setMaternoAsignado($value) { $this->_maternoAsignado = $value; }

  public function getFechaServicio() { return $this->_fechaServicio; }
  public function setFechaServicio($value) { $this->_fechaServicio = $value; }

  public function getIdEstadoOrdenTrabajo() { return $this->_idEstadoOrdenTrabajo; }
  public function setIdEstadoOrdenTrabajo($value) { $this->_idEstadoOrdenTrabajo = $value; }

  public function getIdFlujo() { return $this->_idFlujo; }
  public function setIdFlujo($value) { $this->_idFlujo = $value; }

  public function getExiste() { return $this->_existe; }
  public function setExiste($value) { $this->_existe = $value; }
//</editor-fold>
  
//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * constructor
   * @author VSR, 25/04/2012
   */
  public function __construct() {
    try {
        $this->_id = -1;
        $this->_departamento = "";
        $this->_tipoOrdenTrabajo = "";
        $this->_fechaLlamado = "";
        $this->_descripcion = "";
        $this->_direccion = "";
        $this->_nombrePersona = "";
        $this->_telefonoPersona = "";
        $this->_observacion = "";
        $this->_nombreAsignado = "";
        $this->_paternoAsignado = "";
        $this->_maternoAsignado = "";
        $this->_fechaServicio = "";
        $this->_idEstadoOrdenTrabajo = -1;
        $this->_idFlujo = -1;
        $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * obtiene registro por su id
   * @author VSR, 25/04/2012
   */
  public function obtenerPorId($id = -1) {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaOrdenTrabajo_ObtenerPorId({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = ( is_null($row["Id"]) ) ? -1 : $row["Id"];
        $this->_departamento = ( is_null($row["Departamento"]) ) ? "" : $row["Departamento"];
        $this->_tipoOrdenTrabajo = ( is_null($row["TipoOrdenTrabajo"]) ) ? "" : $row["TipoOrdenTrabajo"];
        $this->_fechaLlamado = ( is_null($row["FechaLlamado"]) ) ? "" : $row["FechaLlamado"];
        $this->_descripcion = ( is_null($row["Descripcion"]) ) ? "" : $row["Descripcion"];
        $this->_direccion = ( is_null($row["Direccion"]) ) ? "" : $row["Direccion"];
        $this->_nombrePersona = ( is_null($row["NombrePersona"]) ) ? "" : $row["NombrePersona"];
        $this->_telefonoPersona = ( is_null($row["TelefonoPersona"]) ) ? "" : $row["TelefonoPersona"];
        $this->_observacion = ( is_null($row["Observacion"]) ) ? "" : $row["Observacion"];
        $this->_nombreAsignado = ( is_null($row["NombreAsignado"]) ) ? "" : $row["NombreAsignado"];
        $this->_paternoAsignado = ( is_null($row["PaternoAsignado"]) ) ? "" : $row["PaternoAsignado"];
        $this->_maternoAsignado = ( is_null($row["MaternoAsignado"]) ) ? "" : $row["MaternoAsignado"];
        $this->_fechaServicio = ( is_null($row["FechaServicio"]) ) ? "" : $row["FechaServicio"];
        $this->_idEstadoOrdenTrabajo = ( is_null($row["IdEstadoOrdenTrabajo"]) ) ? -1 : $row["IdEstadoOrdenTrabajo"];
        $this->_idFlujo = ( is_null($row["IdFlujo"]) ) ? -1 : $row["IdFlujo"];
        $this->_existe = ($this->_id == -1) ? 0 : 1;
      } else {
        $this->_id = -1;
        $this->_departamento = "";
        $this->_tipoOrdenTrabajo = "";
        $this->_fechaLlamado = "";
        $this->_descripcion = "";
        $this->_direccion = "";
        $this->_nombrePersona = "";
        $this->_telefonoPersona = "";
        $this->_observacion = "";
        $this->_nombreAsignado = "";
        $this->_paternoAsignado = "";
        $this->_maternoAsignado = "";
        $this->_fechaServicio = "";
        $this->_idEstadoOrdenTrabajo = -1;
        $this->_idFlujo = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * crea o actualiza un registro
   * @author VSR, 25/04/2012
   */
  public function grabar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaOrdenTrabajo_Grabar({id},'{departamento}','{tipoOrdenTrabajo}','{fechaLlamado}','{descripcion}','{direccion}','{nombrePersona}','{telefonoPersona}','{observacion}','{nombreAsignado}','{paternoAsignado}','{maternoAsignado}','{fechaServicio}',{idEstadoOrdenTrabajo},{idFlujo});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);
      $sp = str_replace("{departamento}", $this->_departamento, $sp);
      $sp = str_replace("{tipoOrdenTrabajo}", $this->_tipoOrdenTrabajo, $sp);
      $sp = str_replace("{fechaLlamado}", $this->_fechaLlamado, $sp);
      $sp = str_replace("{descripcion}", $this->_descripcion, $sp);
      $sp = str_replace("{direccion}", $this->_direccion, $sp);
      $sp = str_replace("{nombrePersona}", $this->_nombrePersona, $sp);
      $sp = str_replace("{telefonoPersona}", $this->_telefonoPersona, $sp);
      $sp = str_replace("{observacion}", $this->_observacion, $sp);
      $sp = str_replace("{nombreAsignado}", $this->_nombreAsignado, $sp);
      $sp = str_replace("{paternoAsignado}", $this->_paternoAsignado, $sp);
      $sp = str_replace("{maternoAsignado}", $this->_maternoAsignado, $sp);
      $sp = str_replace("{fechaServicio}", $this->_fechaServicio, $sp);
      $sp = str_replace("{idEstadoOrdenTrabajo}", $this->_idEstadoOrdenTrabajo, $sp);
      $sp = str_replace("{idFlujo}", $this->_idFlujo, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = $row["Id"];
        $this->_existe = 1;
      } else {
        $this->_id = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * elimina un registro
   * @author VSR, 25/04/2012
   */
  public function eliminar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaOrdenTrabajo_Eliminar({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      $this->_id = -1;
      $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * destructor
   * @author VSR, 25/04/2012
   */
  public function  __destruct() {
   // destruye el objeto
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">
  /**
   * obtiene detalle de la orden trabajo
   * @param <type> $idFlujo
   * @param <type> $idUsuario
   * @return string
   * @author VSR, 25/04/2012
   */
  public static function obtenerDetalle($idFlujo, $entidad, $idUsuario) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaOrdenTrabajo_ObtenerDetalle({idFlujo},'{entidad}',{idUsuario});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idFlujo}", $idFlujo, $sp);
      $sp = str_replace("{entidad}", $entidad, $sp);
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp, Bd::MULTI_QUERY);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  /**
   * graba los datos de la factura
   * @param <type> $idFlujo
   * @param <type> $strRazonSocial
   * @param <type> $strFechaRecepcion
   * @param <type> $strFechaPago
   * @param <type> $dblMontoNeto
   * @param <type> $dblIVA
   * @param <type> $idUsuario
   * @return string
   * @author VSR, 08/12/2011
   */
  public static function grabarDatos($idFlujo, $strOpcion, $idUsuario, $strDepartamento, $strTipoOrden, $strFechaLlamado, $strDescripcion,
                                     $strNombrePersona, $strDireccion, $strTelefono, $strObservacion, $strNombreAsignado, $strPaternoAsignado,
                                     $strMaternoAsignado, $strFechaServicio, $strHoraServicio, $idEstado) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaOrdenTrabajo_GrabarDatos({idFlujo},'{strOpcion}',{idUsuario},'{strDepartamento}','{strTipoOrden}','{strFechaLlamado}','{strDescripcion}','{strNombrePersona}','{strDireccion}','{strTelefono}','{strObservacion}','{strNombreAsignado}','{strPaternoAsignado}','{strMaternoAsignado}','{strFechaServicio}','{strHoraServicio}',{idEstado});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idFlujo}", $idFlujo, $sp);
      $sp = str_replace("{strOpcion}", $strOpcion, $sp);
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);
      $sp = str_replace("{strDepartamento}", $strDepartamento, $sp);
      $sp = str_replace("{strTipoOrden}", $strTipoOrden, $sp);
      $sp = str_replace("{strFechaLlamado}", $strFechaLlamado, $sp);
      $sp = str_replace("{strDescripcion}", $strDescripcion, $sp);
      $sp = str_replace("{strNombrePersona}", $strNombrePersona, $sp);
      $sp = str_replace("{strDireccion}", $strDireccion, $sp);
      $sp = str_replace("{strTelefono}", $strTelefono, $sp);
      $sp = str_replace("{strObservacion}", $strObservacion, $sp);
      $sp = str_replace("{strNombreAsignado}", $strNombreAsignado, $sp);
      $sp = str_replace("{strPaternoAsignado}", $strPaternoAsignado, $sp);
      $sp = str_replace("{strMaternoAsignado}", $strMaternoAsignado, $sp);
      $sp = str_replace("{strFechaServicio}", $strFechaServicio, $sp);
      $sp = str_replace("{strHoraServicio}", $strHoraServicio, $sp);
      $sp = str_replace("{idEstado}", $idEstado, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

//</editor-fold>
}
?>

